home *** CD-ROM | disk | FTP | other *** search
/ Floppyshop 2 / Floppyshop - 2.zip / Floppyshop - 2.iso / diskmags / 0022-3.564 / dmg-3323 / protocol.gem / 68000 / prg_end.s < prev    next >
Text File  |  1987-04-21  |  2KB  |  63 lines

  1. ********************************************************
  2. *           EXTRAIT DE LA BIBLIOTHEQUE TUBE GEM        *
  3. *                  FICHIER "PRG_END.S"                 *
  4. *              VERSION 4.01 (07 Mai 1991)              *
  5. ********************************************************
  6. * Routine du protocole GEM. Cette routine doit être
  7. * exécutée à la fin des programmes, afin de remttre
  8. * le tableau en état (retrait de l'APP_ID du programme).
  9. * JY_SUIS a été ajouté le 14/5/91 simplement par
  10. * commodité (le N. de version reste le même)
  11. OFF_TUBE_PRG:
  12.         MOVEM.L D0-D7/A0-A6,-(SP)
  13.         CMP.W   #$FFFF,JY_SUIS
  14.         BEQ     END_OFF_PRG
  15.         MOVE.L  #"_TUB",COOKIE1
  16.         MOVE.L  #0,COOKIE2
  17.         MOVE.L  #0,COOKIE3
  18.         MOVE.W  #0,COOKIE4
  19.         MOVE.L  #COOKIE_JAR,-(SP)
  20.         MOVE.W  #38,-(SP)
  21.         TRAP    #14
  22.         ADDQ.L  #6,SP
  23. * En retour COOKIE2 contient l'adresse de la boite à gateaux.
  24.         TST.L   COOKIE2 trouvé l'adresse ?
  25.         BEQ     END_OFF_PRG     non donc bye bye...
  26. * et COOKIE3 l'adresse du tableau protocole
  27.         TST.L   COOKIE3 trouvé ce tableau ?
  28.         BEQ     END_OFF_PRG     non donc bye bye...
  29. * Nous allons vérifier que ce tableau contient bien
  30. * les AP_ID et nous allons retirer le notre.
  31.         MOVE.L  COOKIE3,A6              
  32.         CMP.L   #"PROT",(A6)+  L'en-tête est bonne ?
  33.         BNE     END_OFF_PRG    non donc bye bye...
  34. * Continuons à avancer sur le tableau pour
  35. * trouver notre AP_ID et le supprimer.
  36.         MOVE.W  (A6)+,D5        nbr maxi d'APP_ID
  37. .ICI    MOVE.W  (A6),D0 préléve cet AP_ID
  38.         CMP.W   APP_ID,D0       compare avec notre AP_ID
  39.         BEQ     FIND_IT
  40.         CMP.W   #$FFFF,D0
  41.         BEQ     END_OFF_PRG
  42.         SUBQ.W  #1,D5   compte cet APP_ID
  43.         ADDA.L  #2,A6   et pointe sur le suivant
  44.         BRA.S   .ICI
  45. * Notre AP_ID est trouvé: remontons tout le bas du tableau d'un cran.
  46. FIND_IT MOVE.L  A6,A5
  47.         ADDA.L  #2,A5
  48.         MOVE.W  (A5)+,D0
  49.         MOVE.W  D0,(A6)+
  50.         CMP.W   #$FFFF,D0
  51.         BEQ     END_OFF_PRG
  52.         SUBQ.W  #1,D5   compte cet APP_ID
  53.         CMP.W   #1,D5
  54.         BNE     FIND_IT
  55. * D5=1 or c'est normalement impossible car je viens de retirer
  56. * mon APP_ID, je vais donc forcer un flag de fin.
  57.         MOVE.W  #$FFFF,(A6) 
  58. END_OFF_PRG
  59.         MOVEM.L (SP)+,D0-D7/A0-A6
  60.         RTS
  61. *--------------------------------------------------------------------------*    
  62.  
  63.